﻿using System;
using System.Collections.Generic;

namespace Allegro.Integrator
{
    /// <summary>
    /// Provider interface. The methods of this interface provides the necessary computations for doing an integration step
    /// using an ODE solver implementing IODESolver interface.
    /// </summary>
    public interface IStepComputation
    {
        bool PrestepComputation(double x, double[] y);

        bool PoststepComputation(double x, double[] y);

        bool DyDx(double x, double[] yIn, ref double[] dydx, ref bool[] completed);

        bool ComputeValues(double x, double[] yIn, ref double[] yOut, bool[] integrated, ref bool[] completed);
    }
}
